package com.moxiao.yfjh.module.order.dal.mysql.payRecord;

import com.moxiao.yfjh.module.order.controller.admin.payRecord.vo.PayRecordExportReqVO;
import com.moxiao.yfjh.module.order.controller.admin.payRecord.vo.PayRecordPageReqVO;
import com.moxiao.yfjh.module.order.dal.dataobject.payRecord.PayRecordDO;
import java.util.*;

import com.moxiao.yfjh.framework.common.pojo.PageResult;
import com.moxiao.yfjh.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.moxiao.yfjh.framework.mybatis.core.mapper.BaseMapperX;
import org.apache.ibatis.annotations.Mapper;

/**
 * 支付记录 Mapper
 *
 * @author mx
 */
@Mapper
public interface PayRecordMapper extends BaseMapperX<PayRecordDO> {

    default PageResult<PayRecordDO> selectPage(PayRecordPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<PayRecordDO>()
                .eqIfPresent(PayRecordDO::getOuttradeno, reqVO.getOuttradeno())
                .eqIfPresent(PayRecordDO::getModulardescribe, reqVO.getModulardescribe())
                .eqIfPresent(PayRecordDO::getType, reqVO.getType())
                .eqIfPresent(PayRecordDO::getUserid, reqVO.getUserid())
                .eqIfPresent(PayRecordDO::getPayway, reqVO.getPayway())
                .eqIfPresent(PayRecordDO::getDescription, reqVO.getDescription())
                .betweenIfPresent(PayRecordDO::getExpiretime, reqVO.getExpiretime())
                .eqIfPresent(PayRecordDO::getPaymoney, reqVO.getPaymoney())
                .eqIfPresent(PayRecordDO::getDataid, reqVO.getDataid())
                .eqIfPresent(PayRecordDO::getPrepayid, reqVO.getPrepayid())
                .eqIfPresent(PayRecordDO::getPaystate, reqVO.getPaystate())
                .betweenIfPresent(PayRecordDO::getEstablishdate, reqVO.getEstablishdate())
                .betweenIfPresent(PayRecordDO::getPaydate, reqVO.getPaydate())
                .betweenIfPresent(PayRecordDO::getConfirmdate, reqVO.getConfirmdate())
                .eqIfPresent(PayRecordDO::getCallbackid, reqVO.getCallbackid())
                .eqIfPresent(PayRecordDO::getSummary, reqVO.getSummary())
                .eqIfPresent(PayRecordDO::getTransactionid, reqVO.getTransactionid())
                .eqIfPresent(PayRecordDO::getTradetype, reqVO.getTradetype())
                .eqIfPresent(PayRecordDO::getStatus, reqVO.getStatus())
                .betweenIfPresent(PayRecordDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(PayRecordDO::getId));
    }

    default List<PayRecordDO> selectList(PayRecordExportReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<PayRecordDO>()
                .eqIfPresent(PayRecordDO::getOuttradeno, reqVO.getOuttradeno())
                .eqIfPresent(PayRecordDO::getModulardescribe, reqVO.getModulardescribe())
                .eqIfPresent(PayRecordDO::getType, reqVO.getType())
                .eqIfPresent(PayRecordDO::getUserid, reqVO.getUserid())
                .eqIfPresent(PayRecordDO::getPayway, reqVO.getPayway())
                .eqIfPresent(PayRecordDO::getDescription, reqVO.getDescription())
                .betweenIfPresent(PayRecordDO::getExpiretime, reqVO.getExpiretime())
                .eqIfPresent(PayRecordDO::getPaymoney, reqVO.getPaymoney())
                .eqIfPresent(PayRecordDO::getDataid, reqVO.getDataid())
                .eqIfPresent(PayRecordDO::getPrepayid, reqVO.getPrepayid())
                .eqIfPresent(PayRecordDO::getPaystate, reqVO.getPaystate())
                .betweenIfPresent(PayRecordDO::getEstablishdate, reqVO.getEstablishdate())
                .betweenIfPresent(PayRecordDO::getPaydate, reqVO.getPaydate())
                .betweenIfPresent(PayRecordDO::getConfirmdate, reqVO.getConfirmdate())
                .eqIfPresent(PayRecordDO::getCallbackid, reqVO.getCallbackid())
                .eqIfPresent(PayRecordDO::getSummary, reqVO.getSummary())
                .eqIfPresent(PayRecordDO::getTransactionid, reqVO.getTransactionid())
                .eqIfPresent(PayRecordDO::getTradetype, reqVO.getTradetype())
                .eqIfPresent(PayRecordDO::getStatus, reqVO.getStatus())
                .betweenIfPresent(PayRecordDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(PayRecordDO::getId));
    }

}
